import observe from './observer/index.js'
function initMixin(Vue) {
  Vue.prototype._init = function (options) {
    // 初始化配置
    // console.log(options)
    const vm = this
    vm.$options = options
    initState(vm)
  }
}

function initState(vm) {
  // 真正的初始化
  const options = vm.$options
  // 1. 对data初始化
  if (options.data) {
    initData(vm)
  }
  // 2. 对computed初始化
  // 3. 对watch初始化
  // 4.。。。
}

function initData(vm) {
  // 初始化data
  // console.log(vm)
  let data = vm.$options.data
  // 获取data数据
  data = typeof data === 'function' ? data.call(vm) : data
  // console.log(data)
  // 对data数据进行劫持
  observe(data)
}

export default initMixin
